package com.caesi.tacacaesifinal.util;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.DisplayMetrics;

import com.caesi.tacacaesifinal.model.Jogo;

public class Conversao {

    /**
     * Este método faz a conversão de "dp" para "px"
     * 
     * @param valor
     *            em "dp"
     * @param context
     * @return retorna o valor em "px"
     */
    public static float convertDpToPixel(float dp, Context context) {
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float px = dp * (metrics.densityDpi / 160f);
        return (int) px;
    }

    /**
     * Este método faz a conversão de "px" para "dp"
     * 
     * @param valor
     *            em "px"
     * @param context
     * @return retorna o valor em "dp"
     */
    public static float convertPixelsToDp(float px, Context context) {
        Resources resources = context.getResources();
        DisplayMetrics metrics = resources.getDisplayMetrics();
        float dp = px / (metrics.densityDpi / 160f);
        return (int) dp;
    }

    /**
     * Este método converte uma array de bytes em uma imagem do tipo Bitmap
     * 
     * @param imagemBlob
     *            Array de bytes que representa uma imagem
     * @return
     */
    public static Bitmap byteToBitmap(byte[] imagemBlob) {
        byte[] bitmapData = imagemBlob;
        Bitmap testeSaida = BitmapFactory.decodeByteArray(bitmapData, 0,
                bitmapData.length);
        if (testeSaida == null) {
            return null;
        } else
            return BitmapFactory.decodeByteArray(bitmapData, 0,
                    bitmapData.length);
    }

    /**
     * Este método converte um array de bytes em um objeto do tipo Book
     * 
     * @param bookBlob
     *            Array de bytes que representa um objeto Book
     * @return
     */

    /**
     * Este método converte uma lista de String em um array de String
     * 
     * @param lista
     * @return
     */
    public static String[] converterParaArray(ArrayList<String> lista) {
        String[] array = new String[lista.size()];
        for (int i = 0; i < lista.size(); i++) {
            array[i] = lista.get(i);
        }

        return array;
    }

    /**
     * Este método converte um array de String em uma lista de String
     * 
     * @param array
     * @return
     */
    public static ArrayList<String> converterParaArrayList(String[] array) {
        ArrayList<String> lista = new ArrayList<String>();
        if (array != null) {
            for (int i = 0; i < array.length; i++) {
                lista.add(array[i]);
            }
        }
        return lista;

    }

    /**
     * Este método converte uma array de bytes em uma lista de autores
     * 
     * @param autoresBlob
     *            Array de bytes que representa uma lista de autores
     * @return
     */
    @SuppressWarnings("unchecked")
    public static List<Jogo> byteToArrayList(byte[] autoresBlob) {
        return (List<Jogo>) Serializador.deserializeObject(autoresBlob);
    }

}